package model.entities;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import model.persistence.HibernateSessionFactory;

import org.hibernate.Query;
import org.hibernate.Session;

@Entity
@Table(name = "ItemsCarta")
public class ItemCarta
{
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int id;

	@OneToOne
	@JoinColumn(name = "idProducto")
	private Producto producto;

	@Column(name = "precio")
	private float precio;

	@OneToOne
	@JoinColumn(name = "idAreaElaboracion")
	private AreaElaboracion areaElaboracion;

	public static ItemCarta getItemCarta(int idProducto)
	{
		Session session = HibernateSessionFactory.getSessionFactory().openSession();

		/*Query q = session
				.createQuery("select ic from ItemCarta ic join ic.producto where producto.id = :idProducto"); */
		Query q = session
				.createQuery("from ItemCarta");
		//q.setParameter("idProducto", idProducto);

		@SuppressWarnings("unchecked")
		List<ItemCarta> lista =  q.list();
		return (ItemCarta) lista.get(0);
	}

	public boolean verificar()
	{
		return this.areaElaboracion.verificarDisponibilidad(this);
	}

	public Producto getProducto()
	{
		return producto;
	}

	public void setProducto(Producto producto)
	{
		this.producto = producto;
	}

	public float getPrecio()
	{
		return precio;
	}

	public void setPrecio(float precio)
	{
		this.precio = precio;
	}

	public AreaElaboracion getArea()
	{
		return areaElaboracion;
	}

	public void setArea(AreaElaboracion area)
	{
		this.areaElaboracion = area;
	}

	public int getId()
	{
		return id;
	}

	public void setId(int id)
	{
		this.id = id;
	}
}
